 /* 为Date类型增加格式化方法，返回格式化的日期字符串 */
 Date.prototype.Format = function(fmt) {
   var o = {
     "M+" : this.getMonth()+1,                 //月份
     "d+" : this.getDate(),                    //日
     "H+" : this.getHours(),                   //小时
     "m+" : this.getMinutes(),                 //分
     "s+" : this.getSeconds(),                 //秒
     "q+" : Math.floor((this.getMonth()+3)/3), //季度
     "S"  : this.getMilliseconds()             //毫秒
   };
   if(/(y+)/.test(fmt))
     fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
   for(var k in o)
     if(new RegExp("("+ k +")").test(fmt))
   fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
   return fmt;
 }
 
//构造函数，变量为15位或者18位的身份证号码 
 function clsIDCard(CardNo) { 
   this.Valid = false; 
   this.ID15 = ''; 
   this.ID18 = ''; 
   this.Local = ''; 
   if (CardNo != null) 
   this.SetCardNo(CardNo); 
 } 


 // 设置身份证号码，15位或者18位 
 clsIDCard.prototype.SetCardNo = function(CardNo) { 
   this.ID15 = ''; 
   this.ID18 = ''; 
   this.Local = ''; 
   CardNo = CardNo.replace(" ", ""); 
   var strCardNo; 
   if (CardNo.length == 18) { 
     pattern = /^\d{17}(\d|x|X)$/; 
     if (pattern.exec(CardNo) == null) 
       return; 
     strCardNo = CardNo.toUpperCase(); 
   } else { 
     pattern = /^\d{15}$/; 
     if (pattern.exec(CardNo) == null) 
       return; 
     strCardNo = CardNo.substr(0, 6) + '19' + CardNo.substr(6, 9) 
     strCardNo += this.GetVCode(strCardNo); 
   } 
   this.Valid = this.CheckValid(strCardNo); 
 } 
 // 校验身份证有效性 
 clsIDCard.prototype.IsValid = function() { 
   return this.Valid; 
 } 
 // 返回生日字符串，格式如下，1981-10-10 
 clsIDCard.prototype.GetBirthDate = function() { 
   var BirthDate = ''; 
   if (this.Valid) 
     BirthDate = this.GetBirthYear() + '-' + this.GetBirthMonth() + '-' 
         + this.GetBirthDay(); 
   return BirthDate; 
 } 
 // 返回生日中的年，格式如下，1981 
 clsIDCard.prototype.GetBirthYear = function() { 
   var BirthYear = ''; 
   if (this.Valid) 
     BirthYear = this.ID18.substr(6, 4); 
   return BirthYear; 
 } 
 // 返回生日中的月，格式如下，10 
 clsIDCard.prototype.GetBirthMonth = function() { 
   var BirthMonth = ''; 
   if (this.Valid) 
     BirthMonth = this.ID18.substr(10, 2); 
   if (BirthMonth.charAt(0) == '0') 
     BirthMonth = BirthMonth.charAt(1); 
   return BirthMonth; 
 } 
 // 返回生日中的日，格式如下，10 
 clsIDCard.prototype.GetBirthDay = function() { 
   var BirthDay = ''; 
   if (this.Valid) 
     BirthDay = this.ID18.substr(12, 2); 
   return BirthDay; 
 } 

 // 返回性别，1：男，0：女 
 clsIDCard.prototype.GetSex = function() { 
   var Sex = ''; 
   if (this.Valid) 
     Sex = this.ID18.charAt(16) % 2; 
   return Sex; 
 } 

 // 返回15位身份证号码 
 clsIDCard.prototype.Get15 = function() { 
   var ID15 = ''; 
   if (this.Valid) 
     ID15 = this.ID15; 
   return ID15; 
 } 

 // 返回18位身份证号码 
 clsIDCard.prototype.Get18 = function() { 
   var ID18 = ''; 
   if (this.Valid) 
     ID18 = this.ID18; 
   return ID18; 
 } 

 // 返回所在省，例如：上海市、浙江省 
 clsIDCard.prototype.GetLocal = function() { 
   var Local = ''; 
   if (this.Valid) 
     Local = this.Local; 
   return Local; 
 } 

 clsIDCard.prototype.GetVCode = function(CardNo17) { 
   var Wi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1); 
   var Ai = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
   var cardNoSum = 0; 
   for (var i = 0; i < CardNo17.length; i++) 
     cardNoSum += CardNo17.charAt(i) * Wi[i]; 
   var seq = cardNoSum % 11; 
   return Ai[seq]; 
 } 

 clsIDCard.prototype.CheckValid = function(CardNo18) { 
   if (this.GetVCode(CardNo18.substr(0, 17)) != CardNo18.charAt(17)) 
     return false; 
   if (!this.IsDate(CardNo18.substr(6, 8))) 
     return false; 
   var aCity = { 
     11 : "北京", 
     12 : "天津", 
     13 : "河北", 
     14 : "山西", 
     15 : "内蒙古", 
     21 : "辽宁", 
     22 : "吉林", 
     23 : "黑龙江 ", 
     31 : "上海", 
     32 : "江苏", 
     33 : "浙江", 
     34 : "安徽", 
     35 : "福建", 
     36 : "江西", 
     37 : "山东", 
     41 : "河南", 
     42 : "湖北 ", 
     43 : "湖南", 
     44 : "广东", 
     45 : "广西", 
     46 : "海南", 
     50 : "重庆", 
     51 : "四川", 
     52 : "贵州", 
     53 : "云南", 
     54 : "西藏 ", 
     61 : "陕西", 
     62 : "甘肃", 
     63 : "青海", 
     64 : "宁夏", 
     65 : "新疆", 
     71 : "台湾", 
     81 : "香港", 
     82 : "澳门", 
     91 : "国外" 
   }; 
   if (aCity[parseInt(CardNo18.substr(0, 2))] == null) 
     return false; 
   this.ID18 = CardNo18; 
   this.ID15 = CardNo18.substr(0, 6) + CardNo18.substr(8, 9); 
   this.Local = aCity[parseInt(CardNo18.substr(0, 2))]; 
   return true; 
 } 

 clsIDCard.prototype.IsDate = function(strDate) { 
   var r = strDate.match(/^(\d{1,4})(\d{1,2})(\d{1,2})$/); 
   if (r == null) 
     return false; 
   var d = new Date(r[1], r[2] - 1, r[3]); 
   return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[2] && d 
       .getDate() == r[3]); 
 }

 alertCallback = null
 /* 关闭弹出层 */
 function closeAlert() {
	  $("#alert-thickness").fadeOut(50, function(){
		  $("#alertbg").css({display:"none"});
		  $("#alert-thickness-concent").html('');
	  })
	  if (typeof(alertCallback) == "function") {
		  alertCallback();
	  }
 }
 /* 
  * 打开弹出层消息提示
  * 
  * msg: 对话框提示内容
  * callback: 确定按钮的回调函数
  */
 function openAlert(msg, callback) {
	 var alertDiv = $("#alert-thickness");
	 var alertContent = $("#alert-thickness-concent");
	 var alertMask = $("#alertbg");

     //获取弹出窗口的长度和宽度
     var width = alertDiv.width();
     var height = alertDiv.height();
     var iTop = ($(window).height()- height) / 2;
     var iLeft = ($(window).width()- width) / 2;
     alertDiv.css({left:iLeft,top:iTop});

     if (msg) {
         alertContent.html(msg);
     }

     alertCallback = callback;

     alertMask.css({display:"block"});
     alertDiv.fadeIn(50);
 }
 
 confirmDialogCancelCallback = null;
 confirmDialogOKCallback = null;
 /*
  * 打开确认对话框
  * 
  * msg: 对话框提示内容
  * okfunc：确定按钮的回调函数
  * cancelfunc：取消按钮的回调函数
  */
 function openConfirmDialog(msg, okfunc, cancelfunc) {
	 var confirmDiv = $("#confirm-thickness");
	 var confirmContent = $("#confirm-thickness-concent");
	 var confirmMask = $("#confirmbg");
	 
     var width = confirmDiv.width();
     var height = confirmDiv.height();
     var iTop = ($(window).height()- height) / 2;
     var iLeft = ($(window).width()- width) / 2;
     confirmDiv.css({left:iLeft,top:iTop});
     if (msg) {
         confirmContent.html(msg);
     }
     confirmDialogOKCallback = okfunc;
     confirmDialogCancelCallback = cancelfunc;
     
     confirmMask.css({display:"block"});
     confirmDiv.show();
 }
 // 关闭确认对话框
 function closeConfirmDialog() {
     $("#confirm-thickness").css({display:"none"});
     $("#confirmbg").css({display:"none"});
 }
 /* 确定按钮事件处理 */
 function confirmDialogOKHandler() {
      closeConfirmDialog();
	  if (typeof(confirmDialogOKCallback) == "function") {
		  confirmDialogOKCallback();
	  }
 }
 /* 取消按钮事件处理 */
 function confirmDialogCancelHandler() {
     closeConfirmDialog()
    if (typeof (confirmDialogCancelCallback) == "function") {
        confirmDialogCancelCallback();
    }
}

 // 弹出层事件绑定
 $(function(){
     $("#alertOK").on("click", closeAlert);
     $("#dialog-ok").on("click", confirmDialogOKHandler);
     $("#dialog-cancel").on("click", confirmDialogCancelHandler);

     var timer = null;
     var jqLoading = $("#loading-gif");
     // AJAX请求开始时显示动画加载图标 
     $(document).ajaxStart(function() {
         timer = setTimeout(function(){
             jqLoading.show();
         }, 250);
     }).ajaxStop(function() { // AJAX请求完成时关闭动画加载图标
         if (timer) clearTimeout(timer);
         jqLoading.hide();
         timer = null;
     });
 });